怎么以特权模式运行容器 您所在的位置:网站首页 linux deploy 特权用户 怎么以特权模式运行容器

怎么以特权模式运行容器

2023-08-16 11:05| 来源: 网络整理| 查看: 265

背景:在容器中执行 systemctl start 命令启动服务时报错:[root@1ac7516661e1 /]# systemctl start nginx Failed to get D-Bus connection: Operation not permitted

小编这里是使用docker run 启动的容器,相信很多小伙伴刚接触容器的时候应该都遇到过这个问题。

这里针对这个问题,小编分别从docker 和 kubernetes 两个维度来分析怎么解决这个问题。

先查看报错原因:

https://forum.huawei.com/enterprise/zh/thread-427747-1-1.html

可以参考这里面的方法,问题原因这里 说的还是比较详细的

文档中也有针对docker 环境解决方案做说明:

话不多说,这里直接输出问题解决方案:

Docker环境:

容器时添加 --privileged=true 参数 并使用 /usr/sbin/init 的运行环境

创建容器:

# docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用systemctl启动服务了。

ps:这里不建议直接使用特权模式以 docker run -it 这种模式进入容器,如果以特权模式创建容器,

会检查很多启动项,最终也会处于卡死的情况,类似下面这样:

以特权模式运行容器的效果

k8s集群环境

针对k8s 集群环境怎么创建特权级容器,网上并未找到特别详细的说明文档,这里也是参考docker 环境中的操作,加上自己的不断试验,整理操作方式给到大家。

通过上面docker 环境 可以看出,是需要添加 --privileged=true 和 /usr/sbin/init 运行环境。

k8s 创建容器资源的时候同样是需要在yaml 文件中指定这两个参数:

进入k8s 创建的pod 测试效果:

TKE 集群环境:

如果使用腾讯云TKE 集群环境,可以在控制台图形化界面创建容器,相关配置:

集群——工作负载——deployment(为例)—— 容器——显示高级设置



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有